import axios from '@ohos/axios';
import { promptAction } from '@kit.ArkUI';
import type { AnyObject } from '../models/HttpModel';


const request = axios.create({
  // 模拟器ip---这个是自己的本机ipv4地址
  baseURL: 'http://192.168.24.1:3000'
})

request.interceptors.request.use(
  (config) => {
    //   将来添加登录的token参数
    return config;
  }
)

request.interceptors.response.use(
  (response) => {
    if (response.data.code === 200) {
      return response.data.data;
    } else {
      //   错误提示
      promptAction.showToast(response.data.message)
      return Promise.reject(response.data.message)
    }
  },
  (error) => {
    //   错误提示
    promptAction.showToast(error.data.message)
    return Promise.reject(error.data.message)
  }
)

export default class Http {
  get<T>(url: string, params?: AnyObject) {
    return request.get<any, T>(url, {
      params
    });
  }

  post<T>(url: string, data?: AnyObject) {
    return request.post<any, T>(url, data);
  }

  put<T>(url: string, data?: AnyObject) {
    return request.post<any, T>(url, data);
  }

  delete<T>(url: string, params?: AnyObject) {
    return request.get<any, T>(url, {
      params
    });
  }
}


// import { http } from '@kit.NetworkKit'
//
// // Get
// export function requestGet(url:string): Promise<string>{
//   let httpRequest = http.createHttp();
//   let promise = httpRequest.request(url,{
//     method:http.RequestMethod.GET,
//     connectTimeout:60000,
//     readTimeout:60000,
//     // 请求头
//     header:{
//       'Content-type':'application/json'
//     }
//   });
//   return promise.then((value:http.HttpResponse)=>{
//     if (value.responseCode === 200) {  //正常
//       return value.result.toString()
//     }
//     return `{code:${value.responseCode},msg:error}`
//   }).finally(()=>{
//     httpRequest.destroy();  //销毁
//   })
// }
//
// // Post
// export function requestPostWithFormData(url:string,postParam:Array<http.MultiFormData>)
//   : Promise<string> {
//   let httpRequest = http.createHttp();
//   let promise = httpRequest.request(url,{
//     method: http.RequestMethod.POST,
//     expectDataType:http.HttpDataType.STRING,
//     connectTimeout:60000,
//     readTimeout:60000,
//     header:{
//       'Content-type' : 'multipart/form-data'
//     },
//     multiFormDataList:postParam
//   });
//   return promise.then((value:http.HttpResponse) => {
//     if (value.responseCode === 200) {  //正常
//       return value.result.toString()
//     }
//     return `{code:${value.responseCode},msg:error}`;
//   }).finally(() => {
//     httpRequest.destroy();  //销毁
//   })
// }